package cn.listener;

import cn.entity.SysArea;
import cn.mapper.SysAreaMapper;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;

import java.util.ArrayList;
import java.util.List;

/**
 * AnalysisEventListener:解析事件监听 抽象类
 */
public class SysAreaListener extends AnalysisEventListener<SysArea> {

    private List<SysArea> list = new ArrayList<>();//批量插入的 缓存集合

    private SysAreaMapper sysAreaMapper;

//    public SysAreaListener() {
//    }

    public SysAreaListener(SysAreaMapper sysAreaMapper) {
        this.sysAreaMapper = sysAreaMapper;
    }

    /**
     * 解析一行转换成java对象后回调
     * @param data
     * @param context
     */
    @Override
    public void invoke(SysArea data, AnalysisContext context) {
        //批量插入到数据库
        list.add(data);
        System.out.println(context);
        if(list.size()==10){
//            System.out.println("批量插入到数据库......");
            sysAreaMapper.insertBatch(list);
            list.clear();//清空
        }
    }

    /**
     * 所有记录解析完成后的回调
     * @param context
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        //判断缓存集合中是否有数据
        if(list.size()>0){
//            System.out.println("最后一次插入。。。。。。");
//            sysAreaMapper.insertBatch(list);
            list.clear();
        }
    }
}
